package jzqb.service;

import haha.life.common.CutPageBean;
import jzqb.bo.QBFWAuditBo;
import jzqb.bo.QBFWBo;
import jzqb.po.LCPo;
import jzqb.po.QBFWPo;
import jzqb.vo.QBFWAuditVo;
import jzqb.vo.QBFWUserVo;
import jzqb.vo.QBFWVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Description:情报服务Service
 *
 * @author BaiGe
 * @date: 2021/6/21 16:56
 * @Version 1.0
 */
public interface IQBFWService {

    /**
     * 新建情报服务
     * @param qbfwPo 情报服务实体
     * @return
     */
    Boolean  addQBFW(QBFWPo qbfwPo);

    /**
     * 检查该部门是否有领导
     * @param applicationDept
     * @return
     */
    Boolean checkDeptLeader(String applicationDept);

    /**
     * 文件上传
     * @param file   上传的文件
     * @param basePath 基础路径
     * @return
     */
    String  qbfwUploading(MultipartFile file, String basePath);

    /**
     * 文件批量上传
     * @param allFolderPath   文件存放的文件目录(不含文件名,文件名之前)
     * @param request 当前http请求
     * @return
     */
    Object  qbfwBatchUploading(String allFolderPath, HttpServletRequest request);

    /**
     * 删除文件夹
     * @param map 删除的文件夹路径
     * @return
     */
    Boolean  qbfwDelFolder(Map map);

    /**
     * 获取当前用户信息
     * @param currentUserId
     * @return
     */
  QBFWUserVo getCurrentUser(String currentUserId);

    /**
     * 情报服务检索按钮
     * @param qbfwAuditBo
     * @return
     */
   CutPageBean<QBFWPo> complexQueryQBFW(QBFWAuditBo qbfwAuditBo,HttpServletRequest request);

  /**
     * 查询自己的情报服务
     * @param qbfwBo
     * @return
     */
      CutPageBean<QBFWPo> queryQBFW(QBFWBo qbfwBo,HttpServletRequest request);

    /**
     * 展示单条情报服务
     * @param qbfwId  情报服务id
     * @return
     */
    QBFWVo showSingleQBFW(Integer qbfwId);

    /**
     * 展示情报服务-待审核列表
     * @param qbfwAuditBo
     * @return
     */
    CutPageBean<QBFWPo> showQBFWAuditList(QBFWAuditBo qbfwAuditBo, HttpServletRequest request);


    /**
     * 展示情报服务-已审核列表
     * @param qbfwAuditBo
     * @return
     */
    CutPageBean<QBFWPo> showHaveReadQBFWAuditList(QBFWAuditBo qbfwAuditBo, HttpServletRequest request);

    /**
     * 查询服务审批详细内容(包含服务申请详情和三个审批流程)
     * @param qbfwId
     * @return
     */
    QBFWAuditVo showSingleQBFWAudit(Integer qbfwId);

    /**
     * 情报服务流程审批
     * @param lcPo
     * @return
     */
    Object qbfwLcAudit(LCPo lcPo,HttpServletRequest request);


    /**
     * 删除情报服务和所携带的附件
     * @param qbfwPo
     * @return
     */
     Boolean delQBFWAndAnnexPath(QBFWPo qbfwPo);

    /**
     * 修改情报服务
     * @param qbfwBo
     * @return
     */
    Boolean updateQBFW(QBFWBo qbfwBo);

    /**
     * 修改被打回的情报服务
     * @param qbfwBo
     * @return
     */
    Boolean updateRejectQBFWO(QBFWBo qbfwBo);

    /**
     * 查询是否有-->新的情报服务待审数据
     * @param request
     * @return
     */
    int findNewQBFWAuditData(HttpServletRequest request);
}
